The present invention relates generally to the field of data management, and more particularly to data transfer process.
Data to be sent from one application to another is conventionally converted to a suitable transmission format (e.g., serialized), and transmitted, and then restored to its original shape by, for example, de-serializing the data. The associated performance cost of transmitting data by doing such input and output processing is generally high depending on different specific mechanisms.
Multitenancy refers to a principle in software architecture, also referred to as multi-tenant runtime environment, where a single instance of the software runs on a server, serving multiple client-organizations (tenants). Multitenancy contrasts with multi-instance architectures where separate software instances (or hardware systems) operate on behalf of different client organizations. With a multitenant architecture, a software application is designed to virtually partition its data and configuration, and each client organization works with a customized virtual application. Further, in a multitenant architecture, all of the underlying hardware and software is shared.
When applications are running in a multi-tenant runtime, for example, a multi-tenant Java Runtime Environment (JRE), it is possible that there will be two applications that would transmit data between themselves using network sockets. (Note: the term(s) “Java,” “Java Runtime Environment,” and/or “JRE” may be subject to trademark rights in various jurisdictions throughout the world and are used here only in reference to the products or services properly denominated by the marks to the extent that such trademark rights may exist.) (Java and all Java-based trademarks and logos are trademarks or registered trademarks of Oracle and/or its affiliates.) An example of this would be an application server and a database. A socket is one end-point of a two-way communication link between two applications running on a network. Each application binds a socket to its end of the link. To communicate, the client and the server each reads from and writes to the socket bound to the connection.
It is known, where data is routed directly, to determine that a particular socket lies between two sub-processes of a higher-up management layer. Direct routing may be performed through sharing a block of memory between processes or routing straight through the processing bus to avoid the network layer entirely. This is analogous to a hypervisor where the virtual machines (VMs) are guest operating systems (rather than Java virtual machines).